import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
fig ,ax = plt.subplots()

plt.rcParams['font.sans-serif'] = ['Heiti TC']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

x = ["深圳", "广州", "北京", "上海"]
y = [1, 3, 2, 5]

# 循环画图
fig = plt.figure(figsize=(10, 10))
axs = fig.subplots(2, 2)
for i, ax in enumerate(axs.flat):
    ax.bar(x, y)
    ax.set_title(f'Product {i + 1}')
    ax.set_xlabel('Quarters')
    ax.set_ylabel('Sales')

# 另一种写法
# fig, axs = plt.subplots(2, 2)
# axs[0][0].bar(x, y)
# axs[0][1].pie(y, labels=x)
# axs[1][0].plot(x, y)
# axs[1][1].barh(x, y)


plt.show(block=False)
plt.pause(10)
plt.close("all")
"""
我们可以通过.add_gridspec()将整个画布划分成不均匀的区域；
spec = fig.add_gridspec(nrows=2, ncols=2, width_ratios=[1, 3], height_ratios=[1,2])
表示将整个画布裁剪为2行2列的区域，width_ratios=[1, 3]表示横向将两列的宽度按照1:3进行裁剪，同理height_ratios=[1,2]表示纵向按照1:2进行裁剪
spec还支持切片的方式，譬如我们将第二行展示为整个条形图；

fig = plt.figure(figsize=(10, 8))
spec = fig.add_gridspec(nrows=2, ncols=2, width_ratios=[1, 3], height_ratios=[1,2])
ax = fig.add_subplot(spec[0, 0])
ax.bar(x, y)

ax = fig.add_subplot(spec[0, 1])
ax.plot(x, y)

# 第二行整块区域显示条形图
ax = fig.add_subplot(spec[1, :])
ax.barh(x, y)

# 调整各区域之间的距离
plt.subplots_adjust(hspace=0.3, wspace=0.2)
"""
